#define _POSIX_SOURCE
#define _XOPEN_SOURCE
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <sys/types.h>
#ifndef __LIBMSGQUEUE__
#define __LIBMSGQUEUE__

typedef struct {
		int action;
		int pid;
		char data[100];
}infoMsj;

typedef struct {
	long mtype;
	infoMsj info;
}msj;


//Crea la cola de mensajes
// Retorna: id de cola de mensajes
int crearCola();

//Envia un mensaje a través de la cola de mensajes
// Recibe: el destinatario (tipo de mensaje), pid del proceso a mover y datos. 
void enviarMsj(long dest, int action, int pid, const char * data);

//Recibe un mensaje de forma bloqueante
//Recibe: el tipo de mensaje a recibir
// Retorna: una estructura infoMsg con la informacion del mensaje
infoMsj recibirMsj(long mstype);

//Saca todos los mensajes de un de un determinador tipo de la cola
// Recibe: el tipo de mensaje a recibir
void dumpMsj(long mstype);

//Abre una cola ya creada
// Recibe: el id de la cola de mensajes
void abrirCola(int mqueueid);

//Destruye la cola de mensajes
void destruirCola();

#endif

